草庐IT

c++ - Visual Studio 和 Boost::Test

全部标签

Python + setuptools : distributing a pre-compiled shared library with boost. python 绑定(bind)

我有一个C++库(我们在下文中将其称为示例),我使用boost.python库为其编写了Python绑定(bind)。这个Python包装的库将称为pyExample。整个项目是使用CMake构建的,生成的Python包装库是一个名为libpyExample.so的文件。当我使用与libpyExample.so位于同一目录中的Python脚本中的Python绑定(bind)时,我只需编写:importlibpyExamplelibpyExample.hello_world()这会执行包装过程公开的hello_world()函数。我想做什么为了方便起见,我希望我的pyExample库可以

c++ - header 中的枚举导致过度重新编译

JohnLakosreferstothisproblemasaninsidioussourceofcompile-timecoupling(Figure0-3,inhisIntroduction):我面临的问题是编译了太多文件,因为对单个枚举存在物理依赖性。我有一个带有枚举定义的header://version.henumVersion{v1=1,v2,v3,v4,v5,...v100};这被数百个文件使用。每个文件定义一类对象,必须从磁盘读取,使用read()功能。Version用于确定数据的读取方式。每次引入新的类或类成员时,都会将新条目附加到枚举中//typeA.cpp#incl

c++ - 在#include 中获取当前编译单元名称

我当前的目标是创建一行(或尽可能少的)代码,将事件编译单元的其余部分切换到未优化的调试配置。我的第一直觉是:FORCE_DEBUG;//codebelowherewillbeforcedtobeunoptimizedandinadebugenvironment或#include"ForceDebug.h"//codebelowherewillbeforcedtobeunoptimizedandinadebugenvironment会很理想。在我的工作区中,要转换为未优化的调试配置,我需要更改pragma优化级别,还需要#undef一些宏和#define其他宏。FORCE_DEBUG宏不

c# - 如何将 C++/CLI 字符串转换为 const char*

我有一个C++/CLIDLL,我打算将其用作我的C#DLL和nativeC++客户端之间的适配器。我需要在两个方向上传递字符串。该适配器是使用VS2013编译的,但需要支持使用VS2008构建的客户端,因此我在API中使用constchar*。但是即使两者都是VS2013构建的,我所得到的也无法正常工作。我在其他地方找到了使用msclr\marshal.h的建议,因此我创建了:usingnamespacemsclr::interop;System::String^ToCliString(constchar*s){System::String^result=marshal_as(s);r

c++ - Boost.Asio - 轮询命名管道

我正在尝试监听命名管道上的输入。我正在使用Boost.Asio的stream_descriptor和async_read在Linux下。问题是,对io_service::run()的调用只会像我希望的那样阻塞,直到第一次读取。在那之后,它只是继续立即调用处理程序并出现“文件结束”错误,即使我尝试向它附加更多async_reads。我的代码等同于以下内容:boost::asio::io_serviceio_service;intfifo_d=open("/tmp/fifo",O_RDONLY);boost::asio::posix::stream_descriptorfifo(io_se

c++ - 为什么 boost::circular_buffer 在我的基准测试中这么慢?

阅读rationale,boost::circular_buffer看起来很有希望:Suitabilityforreal-timeandperformancecriticalapplications.Fastconstant-timeinsertionandremovalofelementsfromthefrontandback.当我运行一个模拟我的用例的简单基准测试时,将其用作字节缓冲区:写一个更大的block读取较小的block直到为空重复性能绝对糟糕,超过4000x比我自己的hack和spsc_queue慢。lin:101//10240xlock:109//10240xcirc:

c++ - C/C++ 不确定值 : Compiler optimization gives different output (example)

C/C++编译器(clang、gcc等)似乎产生了与优化级别相关的不同输出。您也可以查看本文中包含的在线链接。http://cpp.sh/5vrmv(将输出从无更改为-O3以查看差异)。基于下面的一段代码,有人可以解释我的几个问题吗:#include#includeintmain(void){int*p=(int*)malloc(sizeof(int));free(p);int*q=(int*)malloc(sizeof(int));if(p==q){*p=10;*q=14;printf("%d",*p);}return0;}是否确定执行将始终进入if语句?我们如何知道两个指针p和q的

c++ - 如何使用 clang 和选项 -std=c++11 编译项目,使用 autotools

我正在使用C和C++代码开发软件。我最近在c++11标准中添加了一些代码。在configure.ac我写道:forfin'-std=c++11''-std=c++11-stdlib=libc++'doAX_CHECK_COMPILE_FLAG([$f],[CXXFLAGS="$CXXFLAGS$f"stdpass=true],[],[],[])${stdpass-false}&&breakdoneif!"${stdpass-false}";thenAC_MSG_ERROR([UnabletoturnonC++11modewiththiscompiler])fi使用gcc我没问题,一切顺

c++ - 为动态数据结构预分配内存

我有一个问题/好奇心。假设我想实现一个列表,例如我基本上可以使用cormenbook方法。其中解释了如何实现、插入、删除、键搜索等。然而,关于内存使用的内容却一无所获。例如,如果我想在整数列表中插入一个整数。例如,我可以先创建一个节点(我在那里分配内存)插入整数,然后将节点插入列表中。如果我想删除一个整数,一旦我知道存储在哪个节点中,我就必须释放内存。我现在想知道是否可以更方便地预分配内存来存储,比如说,10个节点并保留一个指向要使用的空闲节点的指针。如果内存池已满,那么我会为20个节点重新分配内存,如果内存池很大,我会分配该池大小的一半(依此类推)。池的管理当然更复杂,因为我需要例如

c++ - 未使用值警告 : C vs C++ using gcc

是否有可能使gcc像g++那样处理C++的未使用值警告?对于像C中的p&&++*p;这样的指令,有一个警告,但对于C++则没有。设置-wno-unused-value并不是真正的解决方案,因为它还会删除有用的警告(如下面的第2行)。示例:$(gcc--version|head-1;ls-lqwe.*;catqwe.x;echo$sep;gcc-c-O2-Wallqwe.c;echo$sep;g++-c-O2-Wallqwe.cc)2>&1|sed's/^//'gcc(Debian4.9.2-10)4.9.2lrwxrwxrwx1tmltml5Jul2310:12qwe.c->qwe.x